package org.summer.lawyer.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * 支付订单对象 pay_order
 *
 * @author summer
 * @date 2024-06-23
 */
@Data
@TableName("pay_order")
public class PayOrder  {


    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;



    /**
     * 支付应用ID
     */
    @TableField(value = "app_id")
    private Long appId;



    /**
     * 微信appid
     */
    @TableField(value = "wx_app_id")
    private String wxAppId;



    /**
     * 商户号
     */
    @TableField(value = "mch_no")
    private String mchNo;



    /**
     * 商户名称
     */
    @TableField(value = "mch_name")
    private String mchName;



    /**
     * 通道ID
     */
    @TableField(value = "channel_id")
    private Long channelId;



    /**
     * 通道编码
     */
    @TableField(value = "channel_code")
    private String channelCode;



    /**
     * 用户ID
     */
    @TableField(value = "user_id")
    private Long userId;



    /**
     * 用户openId
     */
    @TableField(value = "open_id")
    private String openId;



    /**
     * 支付单号
     */
    @TableField(value = "pay_no")
    private String payNo;



    /**
     * 第三方交易号
     */
    @TableField(value = "trade_no")
    private String tradeNo;



    /**
     * 订单ID
     */
    @TableField(value = "order_id")
    private Long orderId;


    /**
     * 商品标题
     */
    @TableField(value = "subject")
    private String subject;



    /**
     * 商品描述
     */
    @TableField(value = "body")
    private String body;



    /**
     * 付款方式
     *
     */
    @TableField(value = "pay_way")
    private String payWay;



    /**
     * 支付状态（1支付成功，2支付失败）
     */
    @TableField(value = "pay_status")
    private Integer payStatus;



    /**
     * 支付时间
     */
    @TableField(value = "pay_time")
    private Date payTime;



    /**
     * 步骤(1 创建支付，2 支付回调通知)
     */
    @TableField(value = "pay_step")
    private Integer payStep;



    /**
     * 请求支付状态（请求支付状态，1成功，2失败）
     */
    @TableField(value = "post_status")
    private Integer postStatus;



    /**
     * 回调状态（1成功，2失败）
     */
    @TableField(value = "return_status")
    private Integer returnStatus;



    /**
     * 支付金额（单位分）
     */
    @TableField(value = "amount")
    private Long amount;



    /**
     * 退款金额
     */
    @TableField(value = "refund_price")
    private Long refundPrice;



    /**
     * 第三方返回的错误码
     */
    @TableField(value = "result_code")
    private String resultCode;



    /**
     * 第三方返回的错误信息
     */
    @TableField(value = "result_msg")
    private String resultMsg;



    /**
     * 提交的信息
     */
    @TableField(value = "post_json")
    private String postJson;



    /**
     * 回调的信息
     */
    @TableField(value = "return_json")
    private String returnJson;



    /**
     * 回调时间
     */
    @TableField(value = "return_time")
    private Date returnTime;



    /**
     * 回调地址
     */
    @TableField(value = "notify_url")
    private String notifyUrl;



    /**
     * 手续费比率（千位比，1/1000）
     */
    @TableField(value = "procedure_kb")
    private Integer procedureKb;



    /**
     * 手续费（单位分）
     */
    @TableField(value = "procedure_fee")
    private Long procedureFee;



    /**
     * 订单退款成功时间
     */
    @TableField(value = "success_time")
    private LocalDateTime successTime;



    /**
     * 扩展参数
     */
    @TableField(value = "ext_param")
    private String extParam;



    /**
     * 删除标志（0代表存在 1代表删除）
     */
    @TableLogic
    @TableField(value = "del_flag")
    private String delFlag;



    /**
     * 创建者
     */
    @TableField(value = "create_by", fill = FieldFill.INSERT)
    private Long createBy;



    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;



    /**
     * 更新者
     */
    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
    private Long updateBy;



    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;



}
